package cl.pelu.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ibatis.sqlmap.client.SqlMapClient;

import cl.pelu.model.bo.dvo.BoletaDVO;
import cl.pelu.model.bo.dvo.ClienteDVO;
import cl.pelu.model.bo.dvo.DetalleDVO;
import cl.pelu.model.bo.dvo.FormulaDVO;
import cl.pelu.model.bo.dvo.ServicioBO;
import cl.pelu.model.bo.dvo.ServicioDVO;
import cl.pelu.model.bo.dvo.TablaDVO;
import cl.pelu.model.bo.dvo.TipoCabelloDVO;

public interface PeluIbatisDao {
	
	public SqlMapClient getSqlMapClient();
	public void setSqlMapClient(SqlMapClient sqlMapClient);
	public List<TablaDVO> getBases() throws SQLException;
	public List<TablaDVO> getGramos() throws SQLException;
	public List<TablaDVO> getOxidante() throws SQLException;
	public List<TablaDVO> getMatiz() throws SQLException;
	public List<TablaDVO> getGramosMatiz() throws SQLException;
	public List<TablaDVO> getTipoCabello() throws SQLException;
	public TablaDVO[] getServicio() throws SQLException;
	public int getPrecioByNombreTipoCabello(String nombreServicio ,  String tipoCabello) throws SQLException;
	public void insertBoleta(BoletaDVO boleta) throws SQLException;
	public int insertDetalle(DetalleDVO detalle) throws SQLException;
	public int insertFormula(FormulaDVO formula) throws SQLException;
	public int getIdServicioByNombre(String nombre) throws SQLException;
	public int  getIdUltimaBoleta () throws SQLException;
	public BoletaDVO getBoletaById(int id) throws SQLException;
	public DetalleDVO[] getDetalleByBolId(int id) throws SQLException;
	public FormulaDVO[] getFormulaByDetId(int id) throws SQLException;
	public void deleteBoletaById(int id) throws SQLException;
	public void deleteDetalleByBolId(int id) throws SQLException;
	public void deleteFormulaByDetId(int id) throws SQLException;
	public BoletaDVO[] getBoletaByFechas(Date fechaDesde , Date fechaHasta) throws SQLException;
	public ServicioBO[] getServicios(ServicioDVO servicio) throws SQLException;	
	public int insertServicio(ServicioDVO servicio) throws SQLException ;
	public ServicioDVO getServiciosByNombre(String nombre) throws SQLException ;
	public void updateServicio(ServicioDVO servicio) throws SQLException ;
	public void deleteServicioById(int id) throws SQLException ;
	public TipoCabelloDVO[] getTipoCabelloByNombre(String nombre) throws SQLException ;
	public int getPrecioByNombre(String nombre) throws SQLException ;
	public int isFormulaByNombre(String nombre) throws SQLException;
	public int isFormulaByNombreTipoCabello(String nombreServicio ,  String tipoCabello) throws SQLException;
	public ServicioDVO getServicioById(int id) throws SQLException ;
	public int getIdServicioByNombreTipoCabello(String nombreServicio ,  String tipoCabello) throws SQLException;
	public TablaDVO[] getServicioAgrupado() throws SQLException;
	public TablaDVO getGramosById(int id) throws SQLException;
	public TablaDVO getMatizById(int id) throws SQLException;
	public TablaDVO getOxidanteById(int id) throws SQLException;
	public TablaDVO getGramosMatizById(int id) throws SQLException;
	public TablaDVO getTipoCabelloById(int id) throws SQLException;
	public TablaDVO getBaseById(int id) throws SQLException;
	public ArrayList <ClienteDVO> getClientes(ClienteDVO cliente) throws SQLException;
	public ClienteDVO getClientesByRut(String rut) throws SQLException;
	public void eliminarClientesByRut(String rut) throws SQLException;
	public void updateClienteByRut(ClienteDVO cliente) throws SQLException;
	public int insertCliente(ClienteDVO cliente) throws SQLException;
	public void updateBoleta(BoletaDVO boleta) throws SQLException;
	public BoletaDVO[] getBoletaByCliente(String rut) throws SQLException ;


}
